
//void widernumber(int* arr, int len)
//{
//	int* str = arr;
//	int cont = 0;
//	while (cont < len)
//	{
//		str = str + cont;
//		for (int i = -1; str + i > arr; i--)
//		{
//			if (*str == str[i])
//				printf("%d", *str);
//		}
//		for (int j = 1; str + j < arr + len; j++)
//		{
//			if (*str == str[j])
//				printf("%d", *str);
//		}
//		cont++;
//	}
//}
//int main()
//{
//	int arr[] = { 1,2,3,4,5,1,2,3,4,7 };
//	int len = sizeof(arr) / sizeof(arr[0]);
//	widernumber(arr, len);
//	return 0;
//}
//#include <stdio.h>
//void find_signumber(int* arr, int len,int* num1, int* num2)
//{
//	int tmp = 0;
//	int pos = 0;
//	for (int i = 0 ; i < len ;i++)
//	{
//		tmp ^= arr[i];
//	}
//	for (; pos < len; pos++)
//	{
//		if (((tmp >> pos) & 1 )== 1)
//		{
//			break;
//		}
//	}
//	for (int i = 0; i < len; i++)
//	{
//		if (((arr[i] >> pos) & 1) == 1)
//		{
//			*num1 ^= arr[i];
//		}
//		else
//		{
//			*num2 ^= arr[i];
//		}
//	}
//}
//int main()
//{
//	int arr[] = { 1,2,3,4,5,1,2,3,4,6 };
//	int x = 0;
//	int y = 0;
//	find_signumber(arr, sizeof(arr) / sizeof(arr[0]), &x, &y);
//	printf("%d %d", x, y);
//	return 0;
//}
//#include <stdio.h>
//#include <string.h>
//int vergleich(const void* p1, const void* p2)
//{
//	return *((int*)p1) - *((int*)p2);
//}int vergleichs(const void* p1, const void* p2)
//{
//	return *((char*)p1) - *((char*)p2);
//}
//
//int vergleichc(const void* p1, const void* p2)
//{
//	return (int)p1 - (int)p2;
//}
//
//int main()
//{
//	int arr[] = { 2,5,3,1,6,8,2,4,5 };
//	int len = sizeof(arr) / sizeof(arr[0]);
//	qsort(arr, len, sizeof(arr[0]), vergleich);
//	char str[] = "adbjbvk";
//	int lens = strlen(str);
//	qsort(str, lens, sizeof(char), vergleichs);
//	char*p[] = { str ,(char*)arr};
//	qsort(p, sizeof(p) / sizeof(p[0]), sizeof(char*), vergleichc);
//	for (int i = 0; i < 3; i++)
//	{
//		printf("%p ", p[i]);
//	}
//	return 0;
//}
#include <stdio.h>
void swap(char* p1, char* p2,int sz)
{
	for (int i = 0; i < sz; i++)
	{
		char tmp = *p1;
		*p1 = *p2;
		*p2 = tmp;
		p1++;
		p2++;
	}
}
void my_qsort(void *str,size_t num ,size_t size,int (*p)(const void * ,const void*) )
{
	for (int i = 0; i < num - 1; i++)
	{
		for (int j = 0; j < num - 1 - i; j++)
		{
			if (p((char*)str + j * size, (char*)str + (j + 1) * size) > 0)
			{
				swap((char*)str + j * size, (char*)str + (j + 1) * size, size);
			}
		}
	}
}
//#include <stdio.h>
//
//void swap(void* p1, void* p2, size_t sz) {
//    for (size_t i = 0; i < sz; i++) {
//        char tmp = ((char*)p1)[i];
//        ((char*)p1)[i] = ((char*)p2)[i];
//        ((char*)p2)[i] = tmp;
//    }
//}
//
//void my_qsort(void* str, size_t num, size_t size, int (*p)(const void*, const void*)) {
//    for (size_t i = 0; i < num - 1; i++) {
//        for (size_t j = 0; j < num - 1 - i; j++) {
//            if (p((char*)str + j * size, (char*)str + (j + 1) * size) > 0) {
//                swap((char*)str + j * size, (char*)str + (j + 1) * size, size);
//            }
//        }
//    }
//}